package com.xugui.learn.pay.pojo.response;

import com.xugui.learn.pay.pojo.enums.PayStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 支付回调处理响应
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class NotifyResponse implements Serializable {

    /**
     * 是否成功
     */
    private Boolean success;

    /**
     * 交易订单号
     */
    private String orderNo;

    /**
     * 三方交易订单号
     */
    private String transactionId;

    /**
     * 退款单号
     */
    private String refundNo;

    /**
     * 退款三方订单号
     */
    private String refundId;

    /**
     * 状态
     */
    private PayStatus status;

    /**
     * 时间
     */
    private LocalDateTime time;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 根据错误码和错误信息创建回调失败响应
     *
     * @param errorCode 错误码
     * @param errorMsg  错误信息
     * @return 回调失败响应
     */
    public static NotifyResponse failure(String errorCode, String errorMsg) {
        return NotifyResponse.builder().success(false)
                .errorCode(errorCode).errorMsg(errorMsg).build();
    }
}